iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0

雖然兩年前參賽已經寫過 FastAPI 教學了,但今年又興起寫 FastAPI 教學的念頭...

動機

越來越複雜的需求

現在的我依然在同一間 AI 新創公司上班,依然在使用 FastAPI 開發後端。但不同的是,專案變得複雜許多,任務的難度也變得困難許多。

為了解決這些問題,就開始去研究各種技術細節與嘗試各種實作方法 (或是直接問同事 XD),慢慢地也有一些新的心得。

FastAPI 的版本更新

此外,FastAPI 這兩年也有一些更新,官方教學文件也改了不少地方。其中一個最直接的感受就是 FastAPI CLI 的出現,官網上的入門教學也改用這個了。雖然只是多了一個新工具,背後的邏輯沒有太大的變化,原本的程式碼還是可以跑,但就是有一種版本落後的感覺,覺得該去更新一下。

因此就覺得,與其更新文章,不如再寫一個新的 FastAPI 系列文章,也順便再多研究一點新東西,提升自己~

Roadmap

和去年一樣,這次也有製作一個 roadmap:

這系列我希望重點擺在「AI 應用服務」,因此預計會花比較多的篇幅在稍微進階一點的內容,包含:同步/非同步、process/thread 等,後面的文章也會舉一些例子並分享會怎麼去實作。

至於 FastAPI 比較基礎的部分 (或是對 AI 應用服務影響沒那麼大) 就會快速帶過或甚至是跳過,先跟各位說聲不好意思QQ
(也歡迎大家去看看我之前寫的文章XD)

雖然系列文章是用 AI 應用作為標題(騙點擊率),但應該也可以應用在其他需要大量時間處理的情境 (e.g. 同態加密)。

期待的 Key Takeaways

這邊列出幾個與我預計會提到的內容相關的問題,大家可以試著回答看看:

  1. def 與 async def 差別在哪裡? 什麼時候用 def? 什麼時候用 async def?
  2. WSGI 是什麼? ASGI 是什麼?
  3. 在部屬時,uvicorn 與 gunicorn 各自的功能是什麼? 有其他選擇嗎?
  4. 如果有耗時的任務,該怎麼處理?
  5. 有些函數需要先初始化 (e.g. 載入 AI 模型),該怎麼處理?
  6. 長時間的任務怎麼讓前端知道進度? 後端怎麼通知前端?

如果都回答得出來的話,那相信你已經是很有經驗的 FastAPI 工程師了
這系列文章可以跳過了XD
如果我文章中有錯誤,或是在後面的實作方法上有更好的建議,還請各位大大進行指證 OAO


下一篇
[Day 02] FastAPI 簡介
系列文
用 FastAPI 打造你的 AI 服務2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言